Flutter Private Properties
Unlike Java, Dart doesn’t have the keywords public, protected, and private. If an identifier starts with an underscore _, it’s private to its library. Libraries not only provide APIs, but are a unit of privacy: identifiers that start with an underscore _
are visible only inside the library.
Every Dart app is a library, even if it doesn’t use a library directive. The import and library directives can help you create a modular and shareable code base.
//File Name: main.dart
import 'package:flutter/material.dart';
/*
* The arrow function allows us to create a simplified function consisting of a single expression.
* We can omit the curly brackets and the return keyword
*/
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
/*
* createState() is a method that takes no arguments but returns a State object
* which is connected to a StatefulWidget
*/
@override
State<StatefulWidget> createState() {
return _MyAppState();
} //createState()
} //StatefulWidget
/* A leading underscore makes the property private, here leading underscore will turn
* this public class in to private class. Now MyAppState class can only be used in
* main.dart file, in our case in MyApp class.
*/
class _MyAppState extends State<MyApp>{
var _questionIndex = 0;
void _answerQuestion() {
setState( () {
_questionIndex++;
} );
print(_questionIndex);
}
@override
Widget build(BuildContext context) {
var questions = [
'What\'s your favorite color?',
'What\'s your favorite animal?'
];
return MaterialApp(
/*
* A Scaffold Widget provides a framework which implements the basic material design visual
* layout structure of the flutter app.
*/
home: Scaffold(
appBar: AppBar(
title: Text('First Flutter App'),
),
body: Column(
children: <Widget>[
Text(questions[_questionIndex]),
ElevatedButton(
child: Text('Answer1'),
//onPressed takes a function
onPressed: _answerQuestion,
),
ElevatedButton(
child: Text('Answer2'),
onPressed: () => print('Answer2 chosen!'),
),
ElevatedButton(
child: Text('Answer3'),
onPressed: () {
//...multiline function body
print('Answer3 chosen');
},
),
],
),
),
);
} //build()
} //MyApp()
Output
Happy Coding!